Priority Queuing
📋 문서 버전
이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.
Priority Queuing (QoS\/%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%20%ED%81%90%EC%9E%89" class="wiki-link wiki-link-missing">우선순위 큐잉)
1. 개요
Priority Queuing(PQ, 우선순위 큐잉)은 네트워크 장비의 출력 인터페이스에서 패킷을 전송할 때, 트래픽의 중요도에 따라 우선순위를 부여하고 높은 순위의 패킷을 먼저 처리하는 QoS(Quality of Service, 서비스 품질) 스케줄링 메커니즘이다.
일반적인 FIFO(First-In, First-Out) 방식은 도착한 순서대로 패킷을 처리하므로, 대용량 데이터 전송(FTP 등)이 발생할 경우 실시간성이 중요한 음성이나 영상 패킷이 뒤로 밀려 지연(Latency) 및 지터(Jitter)가 발생하는 문제가 있다. PQ는 이를 해결하기 위해 트래픽을 여러 개의 논리적 큐로 분리하여 관리한다.
2. 동작 원리
2.1 패킷 분류 (Classification)
패킷이 큐에 진입하기 전, 장비는 패킷 헤더의 특정 필드를 확인하여 어떤 우선순위 큐에 배치할지 결정한다. 주요 분류 기준은 다음과 같다.
- CoS (Class of Service): OSI 2계층(데이터 링크 계층)의 802.1p 표준에서 정의하며, VLAN 태그 내의 3비트 필드를 사용하여 0~7단계의 우선순위를 부여한다. 주로 스위치 환경에서 사용된다.
- DSCP (Differentiated Services Code Point): OSI 3계층(네트워크 계층) IP 헤더의 ToS(Type of Service) 필드 중 6비트를 사용하여 총 64단계의 세분화된 우선순위를 부여한다. 라우터 간 홉-바이-홉(Hop-by-Hop) 전송 시 유지되므로 더 정밀한 제어가 가능하다.
2.2 스케줄링 메커니즘
PQ는 엄격한 우선순위(Strict Priority) 방식을 따른다. 스케줄러는 항상 가장 높은 우선순위의 큐부터 확인하며, 해당 큐에 패킷이 하나라도 남아 있다면 하위 큐의 패킷은 절대 처리되지 않는다.
이때 PQ는 비선점형(Non-preemptive) 특성을 가진다. 즉, 현재 인터페이스를 통해 전송 중인 패킷을 중간에 강제로 중단시키고 새 패킷을 보내는 것이 아니라, 현재 전송 중인 패킷의 전송이 완전히 끝난 후 다음으로 전송할 패킷을 선택하는 시점에 최상위 큐를 확인하여 결정한다.
[우선순위 등급별 처리 예시]
| 큐 등급 | 트래픽 유형 | 매칭 기준 (예시) | 처리 우선순위 | 비고 |
|---|---|---|---|---|
| High | VoIP, 제어 신호 | DSCP EF (Expedited Forwarding) | 1순위 | 최우선 처리 |
| Medium | 화상 회의, 스트리밍 | DSCP AF (Assured Forwarding) | 2순위 | High 큐가 비었을 때 처리 |
| Normal | 일반 웹 트래픽 (HTTP) | DSCP Default | 3순위 | Medium 큐가 비었을 때 처리 |
| Low | 백업, FTP, 이메일 | DSCP CS1 (Bulk) | 4순위 | 모든 상위 큐가 비었을 때 처리 |
2.3 큐잉 동작 과정 (Sequence)
sequenceDiagram
participant P as Incoming Packet
participant C as Classifier (분류기)
participant Q as Priority Queues (High/Med/Low)
participant S as Scheduler (스케줄러)
participant I as Output Interface
P->>C: 패킷 도착 (DSCP/CoS 확인)
C->>Q: 우선순위에 맞는 큐에 할당
loop Scheduling Cycle
S->>Q: High 큐에 패킷이 있는가?
alt Yes
Q->>S: High 패킷 전달
S->>I: 패킷 전송
else No
S->>Q: Medium 큐에 패킷이 있는가?
alt Yes
Q->>S: Medium 패킷 전달
S->>I: 패킷 전송
else No
S->>Q: Low 큐 확인 및 전송
end
end
end
3. 주요 특징 및 장단점
3.1 장점
- 지연 시간 최소화: 실시간 트래픽(Voice, Video)에 대해 최단 경로의 처리 시간을 보장하여 끊김 없는 통신을 가능하게 한다.
- 설정의 단순성: 우선순위 계층만 정의하면 되므로 구현 및 관리가 직관적이다.
3.2 단점 및 위험성
- 기아 현상 (Starvation): 상위 우선순위 큐에 트래픽이 지속적으로 유입될 경우, 하위 큐의 패킷은 전송 기회를 얻지 못하고 큐에 쌓이다가 결국 버려지는(Drop) 현상이 발생한다.
- 대역폭 불균형: 특정 서비스가 전체 대역폭을 독점할 수 있어 네트워크 자원의 효율적 분배가 어렵다.
[기아 현상(Starvation) 묘사]
graph TD
subgraph Traffic_Input [Traffic Inflow]
H_In[High Priority Traffic: Continuous] --> H_Queue
M_In[Medium Priority Traffic] --> M_Queue
L_In[Low Priority Traffic] --> L_Queue
end
subgraph Scheduler [Strict Priority Scheduler]
H_Queue -->|Always Checked First| Out[Output Interface]
M_Queue -.->|Wait until High is Empty| Out
L_Queue -.->|Wait until High & Med are Empty| Out
end
H_Queue -->|Processed| Out
M_Queue -->|Accumulated/Dropped| Drop[Packet Drop]
L_Queue -->|Accumulated/Dropped| Drop
style H_Queue fill:#f96,stroke:#333
style M_Queue fill:#fff,stroke:#333
style L_Queue fill:#fff,stroke:#333
style Drop fill:#ffcccc,stroke:#f00
4. 기아 현상 해결을 위한 보완책
PQ의 치명적인 단점인 기아 현상을 방지하기 위해 실제 환경에서는 다음과 같은 보완 기법을 함께 사용한다.
- 폴리싱 (Policing): 고우선순위 큐에 진입하는 트래픽의 양을 제한(Rate Limit)한다. 예를 들어, VoIP 트래픽이 전체 대역폭의 30%를 초과하면 강제로 드롭하거나 우선순위를 낮추어 하위 큐의 전송 기회를 보장한다.
- 쉐이핑 (Shaping): 트래픽의 전송 속도를 일정하게 유지하여 일시적인 버스트(Burst) 트래픽이 하위 큐를 완전히 차단하는 것을 방지한다.
- LLQ (Low Latency Queuing) 도입: $\text{LLQ} = \text{PQ} + \text{CBWFQ}$ 형태로 정의된다. 특정 큐(Priority Queue)에만 PQ를 적용하고 나머지는 가중치 기반(CBWFQ)으로 처리한다. 특히 LLQ의 Priority Queue에는 'Implicit Policing(암묵적 폴리싱)'이 포함되어 있어, 우선순위 트래픽이 설정된 대역폭 상한선을 초과할 경우 이를 제한함으로써 하위 큐의 기아 현상을 원천적으로 방지한다.
5. 설정 및 구현 예시 (Cisco IOS 기준)
네트워크 장비에서 PQ를 구현하기 위해서는 Class-Map으로 트래픽을 분류하고, Policy-Map에서 우선순위를 지정하는 논리적 단계를 거친다.
[설정 단계]
1. 트래픽 분류: Class-Map 생성
2. 정책 정의: Policy-Map 생성 및 priority 지정
3. 인터페이스 적용: Service-policy 적용
[CLI 설정 스크립트 예시]
# 1. 트래픽 분류: DSCP EF(음성)와 AF41(비디오) 분류
class-map match-all VOICE-TRAFFIC
match dscp ef
class-map match-all VIDEO-TRAFFIC
match dscp af41
# 2. 정책 정의: 우선순위 및 대역폭 할당
policy-map QOS-POLICY
class VOICE-TRAFFIC
priority 256 # PQ 적용, 최대 256kbps까지 우선 처리 및 폴리싱
class VIDEO-TRAFFIC
bandwidth 512 # 최소 대역폭 보장 (CBWFQ 방식)
class class-default
fair-queue # 나머지 트래픽은 공평하게 분배
# 3. 인터페이스 적용
interface GigabitEthernet0/1
service-policy output QOS-POLICY
6. 다른 큐잉 알고리즘과의 비교
6.1 일반 큐잉 알고리즘 비교
| 비교 항목 | Priority Queuing (PQ) | Weighted Fair Queuing (WFQ) | Class-Based WFQ (CBWFQ) |
|---|---|---|---|
| 처리 방식 | 엄격한 우선순위 기반 | 흐름(Flow)별 가중치 기반 | 클래스별 대역폭 할당 기반 |
| 지연 시간 | 최상위 큐에 대해 매우 낮음 | 평균적으로 낮음 | 클래스 설정에 따라 다름 |
| 기아 현상 | 발생 가능성 매우 높음 | 거의 발생하지 않음 | 발생하지 않음 |
| 주요 목적 | 실시간 트래픽 절대 보장 | 일반 트래픽의 공평한 분배 | 서비스별 대역폭 차등 보장 |
| 복잡도 | 낮음 | 낮음 (자동 설정) | 중간 (클래스 정의 필요) |
6.2 LLQ vs CBWFQ 비교
| 비교 항목 | CBWFQ | LLQ (Low Latency Queuing) |
|---|---|---|
| 핵심 메커니즘 | 가중치 기반 대역폭 보장 | PQ(Strict Priority) + CBWFQ |
| 실시간성 보장 | 보장하지 않음 (지연 발생 가능) | 최우선 큐를 통해 지연 최소화 보장 |
| 트래픽 제어 | 설정된 대역폭 내에서 처리 | Priority 큐에 대해 암묵적 폴리싱 수행 |
| 적합한 트래픽 | HTTP, FTP, 일반 데이터 | VoIP, 화상회의 등 실시간 트래픽 |
7. 활용 사례
- VoIP (Internet Protocol Telephony): 음성 패킷은 매우 작은 크기지만 지연에 극도로 민감하다. PQ를 통해 음성 패킷을 최우선 처리함으로써 통화 품질 저하(끊김, 밀림)를 방지한다.
- 화상 회의 (Video Conferencing): 실시간 영상 스트리밍은 대역폭 요구량이 많으면서도 지연 시간이 짧아야 한다. PQ 또는 LLQ를 통해 고우선순위를 부여하여 끊김 없는 화면을 제공한다.
- 기업 핵심 업무 시스템 (Mission-Critical Apps): ERP, 금융 거래 시스템 등 비즈니스에 치명적인 영향을 주는 트래픽을 일반 인터넷 서핑 트래픽보다 우선 처리하여 업무 연속성을 보장한다.
OS 스케줄링 관점의 Strict Priority 분석
PQ의 'Strict Priority' 방식은 운영체제(OS)의 CPU 스케줄링 중 우선순위 기반 스케줄링(Priority Scheduling)과 기술적 궤를 같이한다. 두 메커니즘 모두 "가장 높은 우선순위의 작업이 완료될 때까지 하위 작업은 대기한다"는 원칙을 가진다.
- 유사점: 두 방식 모두 응답 시간(Response Time)이 중요한 작업에 최적화되어 있으며, 구현이 단순하고 결정론적(Deterministic)인 처리 순서를 보장한다.
- 차이점:
- 선점 여부: OS 스케줄링은 높은 우선순위의 프로세스가 도착하면 현재 실행 중인 낮은 우선순위 프로세스를 중단시키는 선점형(Preemptive) 방식이 일반적이다. 반면, 네트워크 PQ는 패킷 단위로 처리되므로 현재 전송 중인 패킷을 중단시키지 않는 비선점형(Non-preemptive) 방식으로 동작한다.
- 자원 성격: OS는 CPU 사이클이라는 계산 자원을 분배하지만, PQ는 인터페이스의 전송 대역폭(Bandwidth)이라는 전송 자원을 분배한다.
TCP 전역 동기화(Global Synchronization)의 연쇄 영향
PQ에서 하위 큐의 기아 현상이 심화되어 패킷 드롭이 발생하면, 단순한 데이터 손실을 넘어 TCP 프로토콜의 특성으로 인한 전역 동기화(Global Synchronization) 현상이 발생하여 네트워크 효율이 급격히 저하된다.
[TCP 전역 동기화 발생 단계] 1. 큐 포화 (Queue Saturation): 고우선순위 트래픽의 독점으로 인해 하위 큐의 버퍼가 가득 찬다. 2. 테일 드롭 (Tail Drop): 버퍼가 꽉 찬 상태에서 도착한 여러 TCP 흐름(Flow)의 패킷들이 동시에 드롭된다. 3. 윈도우 크기 축소 (Window Reduction): 패킷 손실을 감지한 여러 TCP 송신자들이 동시에 '혼잡 제어(Congestion Control)' 메커니즘을 작동시켜 TCP 윈도우 크기를 급격히 줄인다. 4. 처리량 급감 (Throughput Drop): 모든 TCP 세션이 동시에 전송 속도를 낮추면서, 네트워크 대역폭에 여유가 생김에도 불구하고 전체 처리량이 급격히 떨어지는 구간이 발생한다. 5. 동시 회복 및 반복: 이후 모든 세션이 다시 윈도우 크기를 서서히 늘리다가 다시 동시에 큐 포화 상태에 도달하며, 이 '급감-회복' 사이클이 반복되는 동기화 현상이 나타난다.
폴리싱과 쉐이핑의 선택 기준
PQ 환경에서 기아 현상을 방지하기 위해 사용하는 폴리싱과 쉐이핑은 트래픽 처리 방식과 목적에 따라 다음과 같이 구분하여 선택한다.
| 비교 항목 | 폴리싱 (Policing) | 쉐이핑 (Shaping) |
|---|---|---|
| 동작 방식 | 임계치 초과 트래픽을 즉시 드롭하거나 마킹 변경 | 초과 트래픽을 버퍼에 저장 후 지연 전송 |
| 지연/지터 | 추가 지연을 발생시키지 않음 | 버퍼링으로 인해 지연(Latency) 및 지터 증가 |
| 트래픽 형태 | 톱니 모양의 거친 트래픽 프로파일 생성 | 부드러운(Smooth) 트래픽 프로파일 생성 |
| 적합한 트래픽 | 실시간 트래픽 (VoIP, Video) 지연보다 손실이 나은 경우 |
데이터 트래픽 (HTTP, FTP) 손실보다 지연이 나은 경우 |
| PQ 적용 관점 | 고우선순위 큐의 대역폭 독점을 강제로 차단 | 버스트 트래픽을 완화하여 하위 큐의 가용성 확보 |
PQ의 한계와 현대적 진화: HQoS
단순 PQ는 단일 인터페이스 내의 우선순위만 제어할 수 있어, 복잡한 서비스 제공자(ISP) 환경이나 다중 가입자 환경에서는 한계가 있다. 이를 해결하기 위해 HQoS(Hierarchical QoS, 계층적 QoS)로 진화하였다.
[HQoS의 필요성] * 다중 제어 필요: "가입자 A에게 총 10Mbps를 보장하면서, 그 내부에서 음성 트래픽을 최우선 처리"해야 하는 계층적 구조가 필요해졌다. * 정밀한 대역폭 관리: 물리 포트 $\rightarrow$ 논리 인터페이스(VLAN/Sub-interface) $\rightarrow$ 클래스(Class) 순으로 이어지는 계층적 쉐이핑과 큐잉이 가능해졌다.
[HQoS 계층 구조 다이어그램]
graph TD
subgraph Physical_Layer [Physical Port / Interface]
direction TB
subgraph Logical_Layer [Logical Interface / Subscriber / VLAN]
direction TB
subgraph Class_Layer [Traffic Class / Queue]
direction TB
C1[Priority Queue: Voice]
C2[Bandwidth Queue: Video]
C3[Default Queue: Data]
end
L_Shaper[Logical Shaper: Total Bandwidth Limit]
end
P_Shaper[Physical Shaper: Port Speed Limit]
end
C1 --> L_Shaper
C2 --> L_Shaper
C3 --> L_Shaper
L_Shaper --> P_Shaper
P_Shaper --> Out[Network]
트래픽 프로파일링 및 큐 설계 전략
효율적인 PQ 설계를 위해서는 트래픽의 특성을 분석하여 큐의 개수와 우선순위를 전략적으로 배분해야 한다.
1. 트래픽 특성 분석 * 민감도(Sensitivity): 지연(Latency)에 민감한가, 손실(Loss)에 민감한가? * 버스트성(Burstiness): 트래픽이 일정하게 유입되는가, 일시적으로 폭증하는가?
2. 큐 설계 가이드라인 * 최상위 큐 (Strict Priority): * 대상: VoIP, 제어 신호(Keep-alive). * 전략: 매우 작은 버퍼 크기를 설정하여 지연을 최소화하고, 반드시 폴리싱을 적용하여 하위 큐의 기아 현상을 방지한다. * 중간 큐 (Guaranteed Bandwidth): * 대상: 화상회의, 중요 비즈니스 앱. * 전략: 최소 대역폭을 보장(CBWFQ)하되, 상위 큐가 비었을 때 추가 대역폭을 사용할 수 있도록 설계한다. * 최하위 큐 (Best Effort): * 대상: 일반 웹 서핑, 백업 데이터. * 전략: WRED(Weighted Random Early Detection)를 적용하여 TCP 전역 동기화를 방지하고 버퍼 효율을 높인다.
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.